using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections.Specialized;

namespace CodePlex.Resourceful.Wadl
{
    public interface IRepresentationContext
    {
        NameValuePairs TemplateParameters { get; }

        IRepresentationRequest Request { get; }
        IRepresentationResponse Response { get; }

        Uri RootUri { get; }


        ApplicationMethod ApplicationMethod { get; }


        string BasicAuthUsername { get; }
        string BasicAuthPassword { get; }
    }


    public interface IRepresentationRequest
    {
        bool Accepts(string mediaType);
        string MediaType { get;}


        DateTime? IfModifiedSince { get; }

        Stream GetEntityStream();
    }

    public interface IRepresentationResponse
    {
       
        void Render(HttpStatus status);

        void Render(HttpStatus status, string mediaType, string representation);

        void Render(HttpStatus status, string mediaType, Stream input);

        bool IsRendered { get; }

        void SetHeader(string name, string value);
    }

}
